home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d26 / extol30.arc / EXTOL.DOC < prev    next >
Text File  |  1987-10-31  |  28KB  |  847 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.                                     PC-EXTOL
  19.                                   Version 3.0
  20.                                        by
  21.                                Michael C. Taylor
  22.                               129 Country Club Rd.
  23.                               Pine Hill, NJ 08021
  24.  
  25.  
  26.  
  27.  
  28.     Your diskette should contain the following files:
  29.               EXTOL.EXE     - EXTOL PROGRAM
  30.               EXTOL.DOC     - EXTOL DOCUMENTATION
  31.               GENDER.EXT    - SAMPLE USE OF DRILL COMMAND
  32.               ALICE.EXT     - SAMPLE QUIZ ON ALICE IN WONDERLAND
  33.               BEATLES.EXT   - BEATLES TRIVIA QUIZ
  34.               GRAPH.EXT     - SAMPLE EXTOL GRAPHICS PROGRAM (NEEDS CGA)
  35.               TEXT.EXT      - SAMPLE EXTOL PROGRAM USING "TEXTFILE"
  36.               SCRGRAB.COM   - MEMORY RESIDENT "SCREEN-GRABBER" (SEE SCRGRAB.DOC)
  37.               EXTOL.PIC     - File used by GRAPH.EXT
  38. 
  39.  
  40.  
  41.                                   Introduction
  42.  
  43.  
  44.          EXTOL is a programming language designed for Computer-Aided
  45.     Instruction (CAI) which is particularly well-suited for
  46.     non-mathematical domains. EXTOL was originally developed at Essex
  47.     University in England, and the PC version is a full implementation of
  48.     EXTOL along with several enhancements.
  49.  
  50.          PC-EXTOL is distributed as shareware.  You are encouraged to
  51.     copy and distribute copies of the program.  You are prohibited from
  52.     altering the program code and documentation in any way.
  53.  
  54.          PC-EXTOL is the result of many months of programming, debugging
  55.     and documenting.  If you find the programs useful, please register
  56.     your copy by sending a contribution ($25 is suggested) to:
  57.  
  58.                               Michael C. Taylor
  59.                              129 Country Club Rd
  60.                              Pine Hill, NJ 08021
  61.  
  62.          In exchange for registering your copy, you will be sent the
  63.     next version of PC-EXTOL free of charge and will be notified of
  64.     any future enhancements by mail (These will also be provided to
  65.     you free of charge if you send me a diskette by mail).
  66.  
  67.          PC-EXTOL is a very useful language for CAI.  I would
  68.     greatly appreciate any comments, suggestions or questions you
  69.     may have about the system.  I can be reached on the following
  70.     BBS's
  71.               The Pinelands BBS -        (609) 354-9259
  72.               Computer Connection        (609) 784-9404
  73.               Compu-Data                 (609) 232-1245
  74.     or on Compuserve (user id 72467,2723).
  75.     
  76. 
  77.                              EXTOL RELEASE HISTORY
  78.  
  79.  
  80. Release                      Description
  81. -------                      -----------
  82.   1.0                        Initial release of EXTOL - Based on 
  83.                              University of Essex Version.
  84.  
  85.   2.0                        Added If-then-else logic to EXTOL making
  86.                              program code much more succinct and logical
  87.  
  88.   2.1                        Added .textfile command to allow large ASCII
  89.                              Files to be Read in to EXTOL at run time - thus
  90.                              saving memory.
  91.  
  92.   2.11                       Fixed bugs in release 2.1 and expanded maximum
  93.                              EXTOL program size to 500 lines.
  94.  
  95.   3.0                        Expanded maximum program size to 2500 lines.
  96.                              Added graphics commands to EXTOL.
  97.                              Added .decrement command to EXTOL.
  98.                              Added several new sample EXTOL files.
  99.                              Added memory-resident screen saving utility.
  100.                              Added .position command to EXTOL.
  101.                              Removed EXRPT program (no longer needed).
  102.                              EXTOL can now be invoked as:
  103.                                    EXTOL filename.
  104. 
  105.  
  106.                              
  107.  
  108.                         I. Types of statements in EXTOL
  109.  
  110.          EXTOL statements can be grouped into four main catagories. Each
  111.     line could be a text line (to be printed on the screen when the quiz is
  112.     run), a comment (which is ignored when the program is run), a command
  113.     line, or a label (which is used as a 'landmark' to allow the program to
  114.     interrupt the flow of control of the program).
  115.  
  116.  
  117.                         IA. Running EXTOL programs
  118.  
  119.           EXTOL programs may be run in the following ways :
  120.  
  121.                 1) EXTOL filename - where filename is the name of the 
  122.                                     EXTOL program to be run.
  123.  
  124.                 2) EXTOL - if you do not specify a file, you will be 
  125.                            prompted for a filename. 
  126.     
  127.  
  128.                               1.1 Text Statements
  129.  
  130.          Text statements in EXTOL are any lines that begin with any
  131.     character other than '.', '%', and ':'. Text lines are simply printed
  132.     on the terminal at run time. If the text line contains a variable to be
  133.     printed (see Variable command), then the value of the variable is
  134.     copied into the text line before the line is displayed.
  135.  
  136.     For example:
  137.  
  138.          This is a text line.
  139.          This line contains a variable - The correct answer is <answer>.
  140.  
  141.          Often a text line is used immediately before an "accept" command
  142.     to ask a question and allow the student to respond.  If you want the
  143.     students response to be on the same line as the text printed, put a "+"
  144.     as the last character of the text line.
  145.     For example:
  146.  
  147.          Please enter the answer+
  148.          .accept
  149.     This code would accept the student's answer on the same line as the
  150.     request (The "+" will not show up on the screen when the program is
  151.     run).
  152. 
  153.                                   1.2 Comments
  154.  
  155.          Comments in EXTOL are any lines that begin with a '%'. These lines
  156.     are ignored by the program and are included by the programmer only to
  157.     make a comment about the program.
  158.  
  159.     For example:     %This is a comment.
  160.  
  161.                                   1.3 Commands
  162.  
  163.          Commands in EXTOL are any lines beginning with a '.'. These lines
  164.     perform various functions which will be explained in Chapter 2.
  165.     Valid commands in EXTOL are:
  166.          .accept
  167.          .define
  168.          .exact
  169.          .end
  170.          .exit
  171.          .feed
  172.          .goto
  173.          .if
  174.          .else
  175.          .enddo
  176.          .increment
  177.          .decrement
  178.          .keyword
  179.          .caseon
  180.          .caseoff
  181.          .mark
  182.          .match
  183.          .perform
  184.          .print
  185.          .reset
  186.          .response
  187.          .clear
  188.          .copy         
  189.          .textfile
  190.          .stop
  191.          .monitor
  192.          .mode
  193.          .screenfile
  194.          .position
  195.          .<
  196.     ALL COMMANDS MUST BE ENTERED IN LOWER CASE !!
  197.  
  198.                                    1.4 Labels
  199.          Any EXTOL line beginning with a ':' is considered a label. If
  200.     during the program, you wanted to repeat certain lines, the goto
  201.     command would need a 'landmark' to go to.
  202.  
  203.     For example:
  204.          :again
  205.          Enter your name
  206.          .accept
  207.          .goto.again
  208.     The goto command would go to the label named 'again'.
  209. 
  210.  
  211.  
  212.                              II. Commands in EXTOL
  213.  
  214.  
  215.          note: all commands in EXTOL must be entered in lower case letters!
  216.  
  217.  
  218.                            2.0 Score counters
  219.  
  220.          With EXTOL, up to 10 counters can be kept during the execution of
  221.     the program. These counters can be used to keep track of how many
  222.     correct answers the student entered, or how many times the student took
  223.     to get the correct answer or many other things. The counters are
  224.     numbered 0 to 9 and are used with the following commands:
  225.                                    .increment
  226.                                    .decrement
  227.                                    .goto
  228.                                    .match
  229.                                    .print
  230.                                    .reset
  231.                                    .if
  232.  
  233.  
  234.  
  235.                            2.1 The accept command
  236.  
  237.     Format : .accept
  238.  
  239.          The accept command allows the person taking the quiz a chance to
  240.     enter a response.
  241.     For example:
  242.  
  243.          Type in your name.
  244.          .accept
  245.  
  246.     The above lines would prompt the user to enter his or her name and
  247.     would then wait until the student keyed in his name and pressed the
  248.     return key.
  249.  
  250.  
  251.  
  252.  
  253.  
  254.                              2.2 The feed command
  255.  
  256.     Format : .feed(n)
  257.  
  258.          The feed command is used to make the output of the program neater.
  259.     The command prints n blank lines on the terminal.
  260. 
  261.  
  262.                              2.3 The clear command
  263.  
  264.     Format : .clear
  265.  
  266.          The clear command simply clears the screen.
  267.  
  268.  
  269.  
  270.                               2.4 The stop command
  271.  
  272.     Format : .stop
  273.  
  274.          The stop command ends program execution.
  275.  
  276.  
  277.  
  278.                              2.5 The match command
  279.  
  280.     Format  : .match(x,y).val1.val2.etc.
  281.  
  282.     Where   : x is the score counter (0-9) to be incremented,
  283.               y is the amount to increment score counter x,
  284.               and val1,etc. are the values to compare the student's answer
  285.               against. NOTE - THE LAST MATCH VALUE MUST BE FOLLOWED BY "."
  286.  
  287.          This command compares the student's response against the list of
  288.     possible values. If the response matches one of these values (either
  289.     exactly or by keyword see 2.6 - 2.7), the score counter x is increased
  290.     by y.
  291.  
  292.     For example:
  293.  
  294.          Did Dante write "Inferno" ?
  295.          .accept
  296.          .match(2,1).YES.YEAH.TRUE.
  297.  
  298.     In the above program, the student is asked a question. If he responds by 
  299.     typing YES, YEAH or TRUE, the score counter 2 will be increased by 1. If he 
  300.     types in anything else, the score counter will be unchanged. 
  301.  
  302.     Note that in the above example the answers that the student's response
  303.     is to be compared against are all in upper case.  If the .caseon command
  304.     is used, all answers keyed in by the student are converted into upper
  305.     case before they are compared against the values in the .match command.
  306.     If the .caseon option is used, all values in the match command must be
  307.     entered in upper case (see .caseon command).
  308.  
  309.  
  310.                             2.6 The exact statement
  311.     Format : .exact
  312.  
  313.          The exact statement affects the match statement. The exact
  314.     statement makes subsequent match statements compare the student's
  315.     response letter for letter with the possible answers.
  316. 
  317.  
  318.  
  319.                            2.7 The keyword statement
  320.  
  321.     Format : .keyword
  322.  
  323.          The keyword statement also affects the match statement. This
  324.     statement makes the match statement check to see if any of the possible
  325.     correct answers are contained WITHIN the student's response.
  326.  
  327.     For example:
  328.  
  329.          .keyword
  330.          .caseon
  331.          Who wrote Huckleberry Finn?+
  332.          .accept
  333.          .match(2,1).TWAIN.CLEMENS.
  334.  
  335.     In this example, keyword matching is in effect. Therefore if the
  336.     student were to type:
  337.  
  338.          Huckleberry Finn was written by Samuel Clemens.
  339.  
  340.     The answer would still be correct because the keyword 'CLEMENS' is
  341.     contained in his answer.
  342.  
  343.  
  344.  
  345.                              2.7.1 The caseon command
  346.  
  347.     The caseon command causes any answers keyed in by the student to be
  348.     converted to all upper case before being compared with the proper
  349.     answers.  When using the caseon function, be sure that all answers that
  350.     you compare the student's response against, are keyed in upper case in
  351.     your program code.  For example:
  352.  
  353.         .caseon
  354.         Who did Tom fall in love with?
  355.         .accept
  356.         .match(1,1).POLLY.
  357.  
  358.  
  359.  
  360.                           2.7.2 The caseoff command
  361.     The caseoff command cancels the effects of the caseon command.
  362. 
  363.  
  364.                               2.8 The goto command
  365.  
  366.     Format 1 : .goto.val1
  367.  
  368.     Where    : val1 is the name of a label in the program.
  369.  
  370.          This is an unconditional goto to a specific label.
  371.  
  372.     For example :
  373.  
  374.          :name
  375.          Type in your name.
  376.          .accept
  377.          .goto.name
  378.  
  379.     The above example would ask for a name. When the name was entered, the
  380.     .goto.name command would goto the label called name and ask for another
  381.     name. The above example would repeat indefinitely.
  382.  
  383.     Format 2 : .goto(x).val1.val2.etc.
  384.  
  385.     Where    : x is the number (0-9) of a score counter,
  386.                val1,val2 etc. are names of labels in the program.
  387.  
  388.          This format can goto more than one destination based on the value
  389.     of the score counter.
  390.  
  391.     For example:
  392.  
  393.          Did Tom Sawyer ever go home?
  394.          .accept
  395.          .exact
  396.          .match(1,1).YES.YEAH.TRUE.
  397.          .goto(1).incorrect.correct
  398.          :incorrect
  399.          I'm sorry but he did.
  400.          .stop
  401.          :correct
  402.          That's correct!
  403.          .stop
  404.  
  405.     The above example asks asks a question and matches the student's
  406.     response exactly against the correct answers (YES,YEAH or TRUE).  If a
  407.     match is found, score counter number 1 is increased by 1. Then the goto
  408.     command looks at that value. If the student was wrong, the value of
  409.     counter 1 should be 0 and therefore the program will goto incorrect. If
  410.     the student was right, then the value of counter 1 should be 1 and the
  411.     program will jump to the correct portion of the program. (NOTE - see
  412.     .if command for an easier method of doing this!)
  413. 
  414.                         2.8.1 .if, .else, .enddo commands
  415.     
  416.     Format 1   :  .if match(n) do
  417.                      ...(extol commands)
  418.                   .enddo
  419.     
  420.     Where      :  n is the score counter to be looked at.
  421.     
  422.          If the score counter n contains any value greater than zero, the 
  423.     commands found between the .if and .enddo will be executed.  Otherwise, 
  424.     these commands will be skipped.
  425.     
  426.     
  427.     Format 2  :  .if match(n,m) do
  428.                     ...(extol commands)
  429.                  .enddo
  430.     
  431.     Where     :  n is the score counter to be looked at.
  432.                  m is the value to compare the score counter against
  433.     
  434.          If the score counter n contains any value greater than OR EQUAL to 
  435.     value m, the commands found between the .if and .enddo will be executed.  
  436.     Otherwise, these commands will be skipped.
  437.     
  438.     
  439.     Format 3  :  .if match(n,m) do                 .if match(n) do
  440.                     ...(extol commands)               ...
  441.                  .else                     OR      .else
  442.                     ...(extol commands)               ...
  443.                  .enddo                            .enddo
  444.     
  445.          The above variation adds an .else condition to the if phrase.  Formats 
  446.     1 or 2 may have elses within the .if and .enddo .  If the .if test is true, 
  447.     the commands between the .if and .else commands will be executed, 
  448.     otherwise, the commands between the .else and .enddo will be executed.  
  449.     
  450.          If commands may also be nested up to 10 levels.  (There can be up to
  451.     9 .if levels within one .if level).
  452.                                                          
  453.     For example:
  454.                    Type the name of Bilbo's sword
  455.                    .accept
  456.                    .match(0,1).STING.
  457.                    .if match(0) do
  458.                        Very good!
  459.                    .else
  460.                        No, it was called "Sting".
  461.                    .enddo
  462.  
  463. 
  464.  
  465.  
  466.                             2.9 The reset statement
  467.  
  468.     Format : .reset(x)
  469.  
  470.     Where  : x is the number (0-9) of a score counter.
  471.  
  472.          Often when testing answers for right or wrong, after the test is
  473.     performed it is necessary to reset the counter value to zero. The reset
  474.     command does just that.
  475.  
  476.  
  477.  
  478.                            2.10 The increment command
  479.  
  480.     Format : .increment(x,y)
  481.  
  482.     Where  : x is the number of a score counter,
  483.              y is the amount to increment x by.
  484.  
  485.          The increment command increases the value of a score counter
  486.     unconditionally by y.
  487.  
  488.  
  489.  
  490.                            2.101 The decrement command
  491.  
  492.     Format : .decrement(x,y)
  493.  
  494.     Where  : x is the number of a score counter,
  495.              y is the amount to decrement x by.
  496.  
  497.          The decrement command decreases the value of a score counter
  498.     unconditionally by y.
  499.  
  500.  
  501.  
  502.                              2.11 The print command
  503.  
  504.     Format : .print(x)
  505.  
  506.     Where  : x is the number of a score counter.
  507.  
  508.          This command prints the value of any score counter onto the
  509.     screen. If you put a "+" after the print statement, the cursor will
  510.     not be positioned on the next line, and any text will be put on
  511.     the same line. 
  512.  
  513.  
  514.                            2.12 The response command
  515.  
  516.     Format : .response filename
  517.  
  518.     Where  : filename is the name of a response file.
  519.  
  520.          A record can be kept of who used the program, when they used it
  521.     and the values of all the score counters. This command tells what file
  522.     is to be used to keep track of this. A report can be printed out on the
  523.     use of the program.  (See Appendix II - Printing Reports).
  524.                              2.13 The mark command
  525.  
  526.     Format : .mark
  527.  
  528.          This command writes the values of all the score counters to the
  529.     file specified in the .response statement. THIS COMMAND CAN BE USED
  530.     ONLY IF A RESPONSE FILE HAS BEEN SPECIFIED.
  531.  
  532.  
  533.                               2.14 The .< command
  534.  
  535.     Format : .<xxxx>=yyyy
  536.  
  537.     Where  : xxxx is the name of any variable,
  538.              yyyy is the value to be assigned to xxxx.
  539.  
  540.          Variables are very useful in an EXTOL program especially if drills
  541.     are to be used (see 2.15-2.18). Any text statements or the .match
  542.     command can use variables. The same variable can be reset to a new
  543.     value later in the program.
  544.  
  545.     For example:
  546.          .<answer>=yes
  547.          Does 2+2=4?
  548.          .accept
  549.          .match(1,1).<answer>.
  550.          .goto(1).wrong.right
  551.          :wrong
  552.          I'm sorry but the answer was <answer>.
  553.          .stop
  554.          :right
  555.          Very good! The answer was <answer>.
  556.          .stop
  557.  
  558.     In the above example the variable 'answer' is assigned a value of
  559.     'yes'. The match command compares the student's answer to what 'answer'
  560.     contains which is 'yes'. Then if the student was incorrect the program
  561.     prints :
  562.             I'm sorry but the answer was yes.
  563.     If he was correct, the program prints :
  564.             Very good! The answer was yes.
  565.  
  566.  
  567.                             2.15 The define command
  568.  
  569.     Format : .define drillname
  570.  
  571.     Where  : drillname is the name of the drill.
  572.  
  573.          Drills are used for portions of an EXTOL program that are to be
  574.     repeated. The variables in the drill can be assigned new values for
  575.     every time the drill is performed. The define command tells the program
  576.     that all following lines are part of a drill until an .end command is
  577.     encountered. These lines will not be executed unless a .perform command
  578.     is encountered. (See Appendix I - Use of Drills)
  579. 
  580.  
  581.                             2.16 The perform command
  582.  
  583.     Format : .perform drillname
  584.  
  585.     Where  : drillname is the name of a defined drill.
  586.  
  587.          This command will tell the program to execute a predefined drill
  588.     (see 2.15 The define command). When an .exit or an .end command is
  589.     encountered in the drill, the program will resume with the line
  590.     following the .perform command.
  591.  
  592.  
  593.  
  594.  
  595.                              2.17 The exit command
  596.  
  597.     Format : .exit
  598.  
  599.          This command when encountered during a drill tells the program to
  600.     quit execution of the drill and resume with the statement following the
  601.     .perform command.
  602.  
  603.  
  604.  
  605.  
  606.                               2.18 The end command
  607.  
  608.     Format : .end
  609.  
  610.          This command is the last command of a drill section. When
  611.     encountered during a drill, it will quit execution of the drill and
  612.     resume with the statement following the .perform.
  613.  
  614.  
  615.  
  616.  
  617.                             2.19 The copy command
  618.     Format : .copy filename
  619.  
  620.      Where : filename is the name of a file to copy.
  621.  
  622.          This command copies the contents of filename into the
  623.     EXTOL program.
  624.                  
  625.                              2.20 The textfile command
  626.     Format : .textfile=filename
  627.  
  628.      Where : filename is the name of the file containing the desired text.
  629.  
  630.          This command is very useful if you want the student to be able to read 
  631.     any ascii file while executing an EXTOL program.  When EXTOL encounters 
  632.     this command, the file will be displayed for the student.  The text will be 
  633.     displayed in pages automatically and the student will have the following 
  634.     options:
  635.     
  636.          Pressing "N" for the next page of text
  637.          Pressing "F" for the first page of text
  638.          Pressing "X" to end the text 
  639.     
  640.          Another advantage of using this command is that the text lines don't 
  641.     actually get loaded into memory until they are read thus saving memory.  
  642.     Perhaps the most useful aspect of this command is that you can encorporate 
  643.     any ascii files you may already have written into your EXTOL programs 
  644.     without having to copy them over.
  645.   
  646.  
  647.                              2.21 The monitor command
  648.     Format : .monitor=xxxxxx   
  649.  
  650.      Where : xxxxxx = "MONO " for monochrome monitors                   
  651.           or xxxxxx = "COLOR" for graphics monitors
  652.  
  653.         The monitor command must be used if you are using the .screenfile   
  654.     command in your file.  If the monitor you are using can display graphics, 
  655.     you should specify ".monitor=COLOR" otherwise you should specify 
  656.     ".monitor=MONO".  This command is not needed if you are not using the 
  657.     .screenfile command !
  658.  
  659.  
  660.  
  661.                            2.22 The mode command
  662.     Format : .mode=xxxx
  663.  
  664.      Where : xxxx = MEDG for medium resolution graphics
  665.              xxxx = HIGR for high resolution graphics
  666.              xxxx = TEXT for text mode
  667.  
  668.         This command sets the graphics mode in EXTOL.  It is only needed if 
  669.     you are using the .screenfile command.  If the screenfile that you are 
  670.     displaying in your EXTOL program was created with high resolution 
  671.     graphics, you would specify ".mode=HIGR".  The default mode is TEXT.
  672.  
  673.     Note - This command automatically clears the screen when it sets the
  674.            new screen mode.
  675. 
  676.                             2.23 The screenfile command
  677.  
  678.     Format : .screenfile=filename
  679.  
  680.      Where : filename is the name of the saved screenfile to be loaded and
  681.              displayed by your EXTOL program.
  682.  
  683.         This command loads and displays the screen that was previously saved 
  684.     into the specified filename.  To save a graphics screen you must do one of 
  685.     the following :
  686.  
  687.                     1) using a graphics program that allows you to 
  688.                        "BSAVE" screens, save the screens that you will
  689.                        want to display in EXTOL.
  690.  
  691.                     2) use the provided SCRGRAB program as follows:
  692.                         a) type SCRGRAB
  693.                         b) run the program which creates the screens that
  694.                            you want to save
  695.                         c) when the screen that you want to save is displayed
  696.                            on your monitor, press the ALT and F9 keys at the
  697.                            same time. (See SCRGRAB documentation for more
  698.                            detail).
  699.  
  700.  
  701.  
  702.                              2.24 The position command
  703.     Format : .position(x,y)
  704.      
  705.      Where : x is the row to positon the cursor at
  706.              y is the column to position the cursor at
  707.  
  708.  
  709.         This command allows you to position the cursor anywhere on the screen 
  710.     before displaying EXTOL text.  Row must be between 1 and 25 and Column 
  711.     must be between 1 and 80.
  712.  
  713. 
  714.  
  715.     
  716.                           Appendix I - Use of Drills
  717.  
  718.  
  719.     Drills are one of the most powerful features of the Extol language.
  720.     Drills allow you to code logic one time and execute the drill several
  721.     times within the same program.  To use the drill facility, you must
  722.     be familiar with the EXTOL commands - .define, .exit, .end, and the
  723.     use of variables.  An example follows:
  724.  
  725.               %Sample of Drill use in Extol
  726.               %This program quizzes students on the gender of
  727.               %french nouns. The student keys in M if the noun
  728.               %is masculing and F if the noun is feminine.
  729.               %The drill will determine whether or not the student
  730.               %is correct and keep a count of correct answers
  731.               %
  732.               %The drill code follows:
  733.               .define noundrill
  734.                   Please enter the gender of the noun, <noun>+
  735.                   .accept
  736.                   .reset(1)
  737.                   .match(1,1).<answer>.
  738.                   .goto(1).incorrect.correct
  739.                   :incorrect
  740.                   Sorry, but the gender of <noun> is <answer>.
  741.                   .exit
  742.                   :correct
  743.                   Very good! The gender of <noun> is <answer>.
  744.                   .increment(2,1)
  745.               .end
  746.               %This is the end of the drill code
  747.               %Program code follows:
  748.               Welcome to the french noun quiz.  You will be given
  749.               a noun and will be asked to type in the gender of
  750.               the noun.  Please type in "M" if the noun is masculine
  751.               and "F" if the noun is feminine.  Good Luck!
  752.               %
  753.               .caseon
  754.               .exact
  755.               .<noun>=plume
  756.               .<answer>=F
  757.               .perform noundrill
  758.               .<noun>=fils
  759.               .<answer>=M
  760.               .perform noundrill
  761.               Your final score was+
  762.               .print(2)
  763.               out of a possible 2.
  764.               .stop
  765. 
  766.  
  767.     The statements between the .define and the .end statement are what
  768.     make up the drill called "noundrill".  When the program encounters
  769.     a .perform command, these lines will be executed.  Otherwise the
  770.     program skips over this section.
  771.  
  772.     The program statements begin with the .caseon command and continue
  773.     for the rest of the program.  Notice that the program first sets
  774.     the values for <noun> and for <answer> before calling the drill
  775.     with the .perform command.  The drill portion of the code accepts
  776.     the student's answer, compares it against the correct answer and
  777.     prints a message telling the student whether he was right or wrong.
  778.  
  779.     This is just a very brief sample of the use of the drill command.
  780.     This command is ideal for language drills or any repetitive teaching
  781.     method.
  782.  
  783.                           Appendix II - Printing Reports
  784.  
  785.  
  786.  
  787.          If in an EXTOL program you specified a response file and
  788.     wrote a student's scores to it (see .response and .mark commands),
  789.     A report may be printed listing all students who ran the program,
  790.     when they started and finished and what the score counters contained
  791.     when the .mark command was executed.  To produce the report enter
  792.     the following command from DOS.
  793.  
  794.               A> PRINT filename
  795.  
  796.                    or
  797.  
  798.               A> TYPE filename > LPT1
  799.  
  800. 
  801.  
  802.  
  803.  
  804.  
  805.  
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.